package cn.always.xiajia.admin.sys.service;

import javax.validation.Valid;

import cn.always.xiajia.admin.client.api.sys.dto.AuthLoginReqVO;
import cn.always.xiajia.admin.client.api.sys.dto.AuthLoginRespVO;
import cn.always.xiajia.admin.sys.entity.SysUser;
import cn.always.xiajia.framework.common.entity.AjaxResult;

/**
 * 登录中心
 * 
 * @author xgj
 *
 */
public interface SysLoginService {

	/**
	 * 验证账号 + 密码。如果通过，则返回用户
	 *
	 * @param username 账号
	 * @param password 密码
	 * @return 用户
	 */
	SysUser authenticate(String userCode, String password);

	/**
	 * 账号登录
	 *
	 * @param reqVO 登录信息
	 * @return 登录结果
	 */
	AuthLoginRespVO login(@Valid AuthLoginReqVO reqVO);

	/**
	 * 基于 token 退出登录
	 *
	 * @param token token
	 * @param logType 登出类型
	 */
	void logout(String token, Integer logType);

	/**
	 * 刷新访问令牌
	 *
	 * @param refreshToken 刷新令牌
	 * @return 登录结果
	 */
	AuthLoginRespVO refreshToken(String refreshToken);

	/**
	 * 获取登录用户的权限信息
	 * 
	 * @return
	 */
	AjaxResult getPermissionInfo();

}
